package com.itzmn.newcode.offer;

import java.util.ArrayList;

/**
 * @Author: 张梦楠
 * @Date: 2018/11/20 16:16
 * 简书：https://www.jianshu.com/u/d611be10d1a6
 * 码云：https://gitee.com/zhangqiye
 * @Description:  剑指Offer 得到递增数组中两个数和为某个数，然后积是最小的
 *
 *   思路：
 *     数组是递增的，我们从前向后遍历，后面的从后向前遍历
 *     最前面的加最后面的
 *
 */
public class GetArrayTwoNumSunMin {

    public static void main(String[] args) {

        new GetArrayTwoNumSunMin().init();
    }



    public void init(){

        int[] ints = {1, 2, 4,7, 11, 16};


        FindNumbersWithSum(ints,17);
    }

    public ArrayList<Integer> FindNumbersWithSum(int [] array, int sum) {

        ArrayList<Integer> min = new ArrayList<>();

        for (int i=0;i<array.length && array[i]<sum;i++){
            for (int j=array.length-1;j>i;j--){

                if (array[j]>sum){
                    continue;
                }

                int temp = array[i]+array[j];
                if (temp == sum){
                    if (min.size() == 0){
                        min.add(array[i]);
                        min.add(array[j]);
                        break;
                    }else {
                        Integer integer = min.get(0);
                        Integer integer1 = min.get(1);
                        int ji = array[i]*array[j];
                        int ji1 = integer*integer1;
                        //说明新的更小
                        if (ji < ji1){

                            min.clear();
                            min.add(array[i]);
                            min.add(array[j]);
                        }
                        break;
                    }
                }
            }
        }


        System.out.println(min);
        return min;

    }

}
